            //this 用于访问当前对象 
            //仅对于普通函数，箭头函数有自己的指向
//             var obj={
//                 a:12,
//                 // fn(){
//                 //     console.log(this===obj)     //true         
//                 // }
//             };
//             //或者可以在外面自己添加fn
// obj.fn=function(){
//     console.log(this===obj)
//     }
//             obj.fn; //{a:12,fn:f}
'use strict'
// let _this;
// function show(){
//     console.log(this)
    //_this=this;

// }
// let s= new show()
// console.log(s === _this)
// show(); 

//undefined 在有'use strict'的情况下 没有'use strict' 则返回window因为函数不能自己调用自己

// let arr=[1,2,3];
// arr.fn=show;
// arr.fn();//[ 1, 2, 3, fn: [Function: show] ]

// setTimeout(show,1000) //window 因为定时器属于wendow

//new 作为构造函数
// new show
// let data = new Date();

// console.log (data instanceof Date )
           
//改变this指向的方法

// show()
// show.call(show,1)
// show.apply(show,[1,23,4])

//forEach 循环 相当于直接调用show
let arr=[1,2,3]
arr.forEach(function (item){
console.log(this,item);
},88);
 //此时的this==88

// 自己实现forEach
// arr.aaa=fucnction (abc) {
//     for(let i=0;i<arr.legth;i++){
//         abc[this[i]]
//     }
// }
// arr.aaa=function (abc){
//     for(let i=0 ; i<arr.length;i++){
//         abc(this[i])
//     }
// }
// arr.aaa(function (iten){
//     console.log(this,item)
// })